/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package centralehotel.metier.client;

import centralehotel.dao.interfaces.AgenceDAOLocal;
import centralehotel.dao.interfaces.ClientDAOLocal;
import centralehotel.dao.interfaces.ReservationDAOLocal;
import centralehotel.dao.interfaces.TypeChambreDAOLocal;
import centralehotel.modele.Agence;
import centralehotel.modele.Chambre;
import centralehotel.modele.Client;
import centralehotel.modele.FicheHotel;
import centralehotel.modele.Reservation;
import centralehotel.modele.TypeChambre;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author noel
 */
@Stateless
public class ReservationMetier implements ReservationMetierLocal {
    @EJB
    private ReservationDAOLocal reservationDAO;
    @EJB
    private AgenceDAOLocal agenceDAO;
    @EJB
    private TypeChambreDAOLocal typeChambreDAO;
    @EJB
    private ClientDAOLocal clientDAO;
   
    public void creerClient(Client c)
    {
        clientDAO.create(c);
    } 
    
    public boolean  creerReservation(Reservation r, Client c, Agence a,FicheHotel h, TypeChambre t)
    {
        // On cherche si une chambre est libre pour ces dates 
        for(Chambre chambre : h.getChambreCollection())
        {
            if(chambre.getTypeChambre().getIdTypeChambre() == t.getIdTypeChambre())
                System.out.println("Compare type =" + chambre.getTypeChambre().getIdTypeChambre() + " et " +t.getIdTypeChambre());
                if(verifReservationChambre(chambre, r.getDateEntree(), r.getDateSortie()))
                {
                    System.out.println("Type chambre trouvé");
                    r.setAgence(a);
                    r.setClient(c);
                    r.setChambre(chambre);
                    reservationDAO.create(r);
                    return true;
                }
        }
        System.out.println("PAS CE TYPE DE CHAMBRE DS L'HOTEL");
        return false;
    }
    
    public List<TypeChambre> getAllTypeChambre()
    {
        return typeChambreDAO.findAll();
    }
    
    public Agence getCurrentAgence()
    {
        return agenceDAO.find(1);
    }

    private boolean verifReservationChambre(Chambre chambre, Date dateEntree, Date dateSortie)
    {
       return true;
    }
}
